#pragma once
/*
    设计日志消息类，需要涵盖下面这些内容：
    1. 日志输出时间
    2. 日志器名称 —— 要支持多日志器同时使用，每个项目组都有自己独自的一个日志器
    3. 日志的等级
    4. 源文件名称 + 行号 —— 为了帮助定位错误位置服务的
    5. 出现错误的线程ID —— 会使用到C++ 11线程库
    6. 日志消息主体
*/
#include <thread>
#include <string>
#include <stdarg.h>
#include <cstdlib>
#include "util.hpp"
#include "level.hpp"

namespace bit
{
    class logMessage
    {
    public:
        // 构造函数：
        logMessage(const std::string &filename, size_t line, const std::string logname,
                   const level::logLevel level,
                   const std::string &str)
            : _logname(logname), _level(level), _time(util::get_curtime()),
              _filename(filename), _line(line), _tid(std::this_thread::get_id()), _message(str){}
              
        std::string _time;      // 日志时间——get_curtime()
        std::string _logname;   // 日志器名称
        level::logLevel _level; // 日志等级
        std::string _filename;  // 源文件名称——_FILE_
        size_t _line;           // 文件的行号
        std::thread::id _tid;   // 线程ID——get_id()
        std::string _message;   // 日志消息主体
    };
}